<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body></body>
  <script>
    // 1.100~200之间的质数
    for (let i = 100; i <= 200; i++) {
      let flag = true;
      for (let j = i - 1; j > 1; j--) {
        if (i % j == 0) {
          flag = false;
          break;
        }
      }
      if (flag) {
        document.write(i + "\t");
      }
    }
    document.write("<br/>");
    // 2.1~20的阶乘和

    let sum = 0n; //使用BigInt进行大数运算，消除精度损失带来的结果错误
    for (let i = 1n; i <= 20; i++) {
      let num = 1n;
      for (let j = i; j > 0; j--) {
        num *= j;
      }
      sum += num;
    }
    document.write(`1!+2!+...+20!=${sum}<br/>`);
    // 3.篮球从5米高的地方掉下来，每次弹起的高度是原来的30%，经过几次弹起，篮球的弹起高度小于0.1米。
    let Height = 5,
      count = 0;
    while (true) {
      Height *= 0.3;
      count++;
      if (Height < 0.1) {
        break;
      }
    }
    document.write(`经过${count}弹起后，篮球的弹起高度小于0.1米。<br/>`);
    // 4.有一个棋盘，有64个方格，在第一个方格里面放1粒芝麻重量是0.00001kg，第二个里面放2粒，第三个里面放4，棋盘上放的所有芝麻的重量
    let sum_count = 0n;
    for (var Grid = 64n; Grid > 0; Grid--) {
      sum_count += 2n ** (Grid - 1n);
    }
    document.write(
      `棋盘上放的所有芝麻的重量为：${Number(sum_count) * 10 ** -5}kg。`
    );
  </script>
</html>
